Header 파일(.h)에 선언과 정의를 동시에 하지 않는 이유

C++
Author

류지창

Published

January 3, 2024

constant를 선언하고 초기화까지 하면 이 상수를 여러 .cpp 파일에서 부를경우 서로 다른 메모리 주소를 가지게 되어 메모리 누수의 가능성이 있다. 고로, header 파일에서는 상수를 선언만 하고 같은 이름의 .cpp 파일을 만들어 거기에서 상수를 초기화하면 다른 .cpp 파일에서 동일한 상수를 초기화하더라도 같은 메모리 주소를 사용하게 된다. [홍정모 인프런 C++강의, 4.2장]

// MyConstants.h
namespace Constants
{
    extern const double pi;
    extern const double gravity;
}
// MyConstants.cpp
namespace Constants
{
    extern const double pi{3.141592};
    extern const double gravity{9.8};
}